package com.black.cat.environment;

import com.black.cat.convert.ConfigurableConversionService;
import com.black.cat.lang.Nullable;

public interface ConfigurablePropertyResolver extends PropertyResolver {

    // 返回在解析属性时使用的ConfigurableConversionService。此方法的返回值可被用户定制化set
    // 例如可以移除或者添加Converter  cs.addConverter(new FooConverter());等等
    ConfigurableConversionService getConversionService();
    // 全部替换ConfigurableConversionService的操作(不常用)  一般还是get出来操作它内部的东东
    void setConversionService(ConfigurableConversionService conversionService);

    // 设置占位符的前缀  后缀    默认是${}
    void setPlaceholderPrefix(String placeholderPrefix);
    void setPlaceholderSuffix(String placeholderSuffix);
    // 默认值的分隔符   默认为冒号:
    void setValueSeparator(@Nullable String valueSeparator);
    // 是否忽略解析不了的占位符，默认是false  表示不忽略~~~（解析不了就抛出异常）
    void setIgnoreUnresolvableNestedPlaceholders(boolean ignoreUnresolvableNestedPlaceholders);


    void setRequiredProperties(String... requiredProperties);
    void validateRequiredProperties();
            //throws MissingRequiredPropertiesException;
}
